<?php
class OldPassportRpc {
	private $newPassportRpc;
	/**
	 * @description:    
	 *
	 * @param : 
	 * @return: 
	 *
	 */
	function __construct($obj = '') {
		is_object($obj) && $this->newPassportRpc = $obj;
	}

	/**
	 * @description:    
	  用户认证登录
	  用于只知道md5后的密码的用户是否为合法用户
	 *
	 * @param : $uid        string      用户登录后的账号
	  $password   string      md5后的 用户登录密码
	 * @return: int，        0：xml-rpc错误；
	  1：成功；
	  -2：用户不存在；
	  -3：不匹配；
	  -4：数据库错误
	 *
	 */
	function authorizeByMd5pwd($uid, $md5_password) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64($md5_password),
			'ip' => $this->getIP()
		);
		return $this->newPassportRpc->command('login', $parameters);
	}

	/**
	 * @description:    
	  用户认证登录
	 *
	 * @param : $uid        string      用户登录后的账号
	  $password   string      用户登录密码
	 * @return: int，        0：xml-rpc错误；
	  1：成功；
	  -2：用户不存在；
	  -3：不匹配；
	  -4：数据库错误
	 *
	 */
	function authorizeByUserId($uid, $password) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'ip' => $this->getIP()
		);
		return $this->newPassportRpc->command('login', $parameters);
	}

	/**
	 * @description:    
	 *
	 * @param : 
	 * @return: 
	 *
	 */
	function login($uid, $password) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'ip' => $this->getIP()
		);
		return $this->newPassportRpc->command('login', $parameters);
	}

	/**
	 * @description:    
	 *
	 * @param : 
	 * @return: 
	 *
	 */
	function loginWithMD5Pass($uid, $md5pass) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64($md5pass),
			'ip' => $this->getIP()
		);
		return $this->newPassportRpc->command('login', $parameters);
		
	}

	/**
	 * @description:    
	 *
	 * @param : 
	 * @return: 
	 *
	 */
	function base64($data) {
		$length = strlen($data);
		$new_data = "";
		for ($i = 0; $i < $length; $i += 2) {
			$new_data .= pack("C", hexdec(substr($data, $i, 2)));
		}
		return base64_encode($new_data);
	}

	/**
	 * @description:
	  根据数组生成md5加密的包
	 *
	 * @param : $params     array       参数数组
	 * @return: string，    加密后的包
	 *
	 */
	function makeMd5Pkg($params) {
		$str_vals = "";
		foreach ($params AS $name => $val) {
			$str_vals = $str_vals . $val;
		}
		$salt = substr($str_vals, 0, 1) . substr($str_vals, -1, 1);
		return crypt($str_vals, '$1$' . $salt);
	}

	/**
	 * @description:
	  用户详细信息
	 *
	 * @param : $uid        string      用户登录后的账号
	  $base64     string      是否需要base64编码
	 * @return: array,  用户信息，如果 $base64 = 1，nickname、address、unit、realname 为编码后的返回值
	 *
	 */
	function getUserDetailInfo($uid, $base64) {
		$parameters = array('uid' => $uid,
			'isBase64' => $base64);
		return $this->newPassportRpc->command('getUserDetailInfo', $parameters);
	}

	/**
	 * @description:
	  校验二级密码
	 * @param : $uid        string      用户登录后的账号
	  $password   string      二级密码
	 * @return: int         0：xml-rpc错误 
	  1：成功
	  -2：用户不存在
	  -3：不匹配
	  -4：数据库错误
	 *
	 */
	function checkPassWord2($uid, $password) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
//                            'ip'        => $this->getIP()
		);
		return $this->newPassportRpc->command('checkPassWord2', $parameters);
	}

	/**
	 * @description:
	  身份证保护
	 *
	 * @param : $uid            string      用户登录后的账号
	  $realname       string      真实姓名
	  $card_type      string      证件类型
	  $card_num       string      证件号码
	 * @return: int，0：xml-rpc错误 
	  1：成功
	  -4：数据库错误
	 *
	 */
	function IDProtect($uid, $realname, $card_type, $card_num) {
		$parameters = array('uid' => $uid,
			'realname' => $realname,
			'card_type' => $card_type,
			'card_num' => $card_num,
			'ip' => $this->getIP());
		return $this->newPassportRpc->command('IDProtect', $parameters);
	}

	/**
	 * @description:
	  绑定邮箱
	 *
	 * @param : $uid            string      用户登录后的账号
	  $bindmail       string      绑定邮箱
	 * @return: integer, 0: xml-rpc错误 
	  1: 成功
	  -4: 数据库错误
	 *
	 */
	function bindMail($uid, $bindmail, $isEmailVerified = '0') {
		$parameters = array('uid' => $uid,
			'bindmail' => $bindmail,
			'ip' => $this->getIP(),
			'isEmailVerified' => $isEmailVerified,
		);
		return $this->newPassportRpc->command('bindMail', $parameters);
	}

	/**
	 * @description:
	  获取手机验证码
	 *
	 * @param : $uid        string      用户登录后的账号 
	  $phone_num  string      用户手机号
	  $flag       int         0或者1
	 * @return: int,    0：xml-rpc错误 
	  1：发送成功
	  2：发送失败
	  3：数据库错误
	 *
	 */
	function getMobileAuthCode($uid, $phone_num, $flag) {
		$parameters = array('uid' => $uid,
			'phonenum' => $phone_num,
			'flag' => $flag);
		return $this->newPassportRpc->command('getMobileAuthCode', $parameters);
	}

	/**
	 * @description:
	  激活绑定的手机
	 *
	 * @param : $uid            string      用户登录后的账号
	  $phone_num      string      用户手机号
	  $auth_code      string      用户输入的激活码
	 * @return: int,  0：xml-rpc错误 
	  1：成功
	  -2：用户记录不存在
	  -4：数据库错误
	  -8：验证码不匹配
	 *
	 */
	function activateMobile($uid, $phone_num, $auth_code) {
		$parameters = array('uid' => $uid,
			'phone_num' => $phone_num,
			'auth_code' => $auth_code,
			'ip' => $this->getIP());
		return $this->newPassportRpc->command('activateMobile', $parameters);
	}

	/**
	 * @description:
	  创建新用户
	 *
	 * @param : $uid            string      用户登录后的账号
	  $password       string      登录密码
	  $password2      string      二级密码
	  $bindmail       string      绑定邮件
	  $regip          string      注册ip
	  $regdate        string      注册时间
	  $realname       string      真实姓名
	  $id_type        string      证件类型
	  $id_num         string      证件号码
	 * @return: int,  0：xml-rpc错误 
	  1：添加新用户成功
	  -1：该Id已经被注册过
	  -4：数据库错误
	 *
	 */
	function createNewUserForNew($uid, $password, $password2, $bindmail, $regip, $regdate, $realname, $id_type, $id_num) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'password2' => "{MD5}" . $this->base64(md5($password2)),
			'bindmail' => $bindmail,
			'regip' => $regip,
			'regdate' => $regdate,
			'realname' => $realname,
			'id_type' => $id_type,
			'id_num' => $id_num);
		return $this->newPassportRpc->command('createNewUserForNew', $parameters);
	}

	/**
	 * @description:
	  创建新用户添加了注册来源标识
	 * 身份证如果没有，传空值，请同时保留证件类型为空
	 *
	 * @param : $uid            string      用户登录后的账号
	  $password       string      登录密码
	  $password2      string      二级密码
	  $bindmail       string      绑定邮件
	  $regip          string      注册ip
	  $regdate        string      注册时间
	  $realname       string      真实姓名
	  $id_type        string      证件类型
	  $id_num         string      证件号码
	  $source                     来源
	  $activate_games string      预激活游戏字符串
	  $isEmailVerified            邮箱是否经过验证 0:未验证 1:已验证

	 * @return: int,  0：xml-rpc错误 
	  1：添加新用户成功
	  -1: 该Id已经被注册过
	  -4: 数据库错误
	  -32: 用户名输入错误
	  -33: 用户名过滤错误
	  -34: 登录密码输入错误
	  -35: 二级密码输入错误
	  -36: 邮件格式输入错误
	  -37: 身份信息不完整
	  -38: 真实姓名输入错误
	  -39: 身份正号码输入错误
	 *
	 */
	function createNewUserForAll($uid, $password, $password2, $bindmail, $regip, $regdate, $realname, $id_type, $id_num, $source, $activate_games, $isEmailVerified = '') {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'password2' => "{MD5}" . $this->base64(md5($password2)),
			'bindmail' => $bindmail,
			'regip' => $regip,
			'regdate' => $regdate,
			'realname' => $realname,
			'id_type' => $id_type,
			'id_num' => $id_num,
			'source' => $source,
			'activate_games' => $activate_games,
			'isEmailVerified' => $isEmailVerified
		);
		return $this->newPassportRpc->command('createNewUserForAll', $parameters);
		
	}

	function createNewUserForComeFrom($uid, $password, $password2, $bindmail, $regip, $regdate, $realname, $id_type, $id_num, $comefrom_uid, $comefrom_game, $activate_games) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'password2' => "{MD5}" . $this->base64(md5($password2)),
			'bindmail' => $bindmail,
			'regip' => $regip,
			'regdate' => $regdate,
			'realname' => $realname,
			'id_type' => $id_type,
			'id_num' => $id_num,
			'comefrom_uid' => $comefrom_uid,
			'comefrom_game' => $comefrom_game,
			'activate_games' => $activate_games);
		return $this->newPassportRpc->command('createNewUserForComeFrom', $parameters);
	}

	/**
	 * @description:
	  注册新用户(联合运营版) added by 伍新春 2007-01-30
	  说明： 二级密码可以为空，系统会将二级密码与登录密码一致处理;
	  真实姓名，证件类型，证件号码可以同时为空或者同时不为空;
	  参数个数必须与函数的参数个数相同，可以为空的字段可用空字符串代替;
	  比(完全版)多两个参数comefrom_uid、comefrom_game，分别代表来自哪个联盟ID和什么游戏。

	 * @param : $uid            string      用户登录后的账号
	  $password       string      登录密码
	  $password2      string      二级密码
	  $bindmail       string      绑定邮件
	  $regip          string      注册ip
	  $regdate        string      注册时间
	  $realname       string      真实姓名
	  $id_type        string      证件类型
	  $id_num         string      证件号码
	  $source                     来源
	  $comefrom_uid               来自于合作对象的什么联盟网站
	  $comefrom_game              联合运营的游戏
	  $activate_games string      要激活的游戏（例如：jxsj|fs2）

	 * @return: int,  0：xml-rpc错误 
	  1：添加新用户成功
	  -1: 该Id已经被注册过
	  -4: 数据库错误
	  -32: 用户名输入错误
	  -33: 用户名过滤错误
	  -34: 登录密码输入错误
	  -35: 二级密码输入错误
	  -36: 邮件格式输入错误
	  -37: 身份信息不完整
	  -38: 真实姓名输入错误
	  -39: 身份正号码输入错误
	 *
	 */
	function createNewUserForUnionOperating($uid, $password, $password2, $bindmail, $regip, $regdate, $realname, $id_type, $id_num, $source, $comefrom_uid, $comefrom_game, $activate_games) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'password2' => "{MD5}" . $this->base64(md5($password2)),
			'bindmail' => $bindmail,
			'regip' => $regip,
			'regdate' => $regdate,
			'realname' => $realname,
			'id_type' => $id_type,
			'id_num' => $id_num,
			'source' => $source,
			'comefrom_uid' => $comefrom_uid,
			'comefrom_game' => $comefrom_game,
			'activate_games' => $activate_games);
		;
		return $this->newPassportRpc->command('createNewUserForUnionOperating', $parameters);
	}

	/**
	 * @description:
	  检测用户是否存在
	 *
	 * @param : $uid    string      用户通行证
	 * @return: Integer,     0：xml-rpc错误 
	  -1：用户已存在
	  -2：用户不存在
	  -4：数据库错误
	 *
	 */
	function isExistedUserId($uid) {
		$parameters = array('uid' => $uid);
		return $this->newPassportRpc->command('isExistedUserId', $parameters);
	}

	/**
	 * @description:
	  修改登录密码
	 *
	 * @param : $uid            string      用户通行证
	  $password       string      登录密码
	  $password2      string      二级密码
	 * @return: int,          0：xml-rpc错误 
	  1: 成功
	  -2: 用户不存在
	  -3: 旧密码错误
	  -4: 数据库错误
	 *
	 */
	function restorePassWord($uid, $password, $password2) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'password2' => "{MD5}" . $this->base64(md5($password2)),
			'ip' => $this->getIP());
		return $this->newPassportRpc->command('restorePassWord', $parameters);
	}

	/**
	 * @description:
	  通过绑定邮箱修改二级密码
	 *
	 * @param : $uid            string      用户通行证 
	 * @return: int,          0 ：xml-rpc错误 
	  1 : 发送成功
	  2 : 发送失败
	  -2 : 用户不存在
	  -27: 此用户未绑定邮箱
	  -4 : 数据库错误
	 *
	 */
	function restorePassWord2ForMailCreate($uid) {
		$parameters = array('uid' => $uid);
		return $this->newPassportRpc->command('restorePassWord2ForMailCreate', $parameters);
	}

	/**
	 * @description:
	  修改二级密码
	 *
	 * @param : $uid            string      用户通行证 
	  $pid            string      随机参数
	  $password2      string      二级密码
	 * @return: int,          0：xml-rpc错误 
	  1: 发送成功
	  -2: 未找到记录
	  -4: 数据库错误
	 *
	 */
	function restorePassWord2ForMailActive($uid, $pid, $password2) {
		$parameters = array('uid' => $uid,
			'pid' => $pid,
			'password2' => "{MD5}" . $this->base64(md5($password2)),
			'ip' => $this->getIP());
		return $this->newPassportRpc->command('restorePassWord2ForMailActive', $parameters);
	}

	/**
	 * @description:
	  修复登陆密码
	 *
	 * @param : $uid            string      用户通行证
	 * @return: int,          0 : xml-rpc错误 
	  1 : 发送成功
	  2 : 发送失败
	  -2 : 用户不存在
	  -27: 此用户未绑定邮箱
	  -4 : 数据库错误
	 *
	 */
	function restorePassWordForMailCreate($uid) {
		$parameters = array('uid' => $uid);
		return $this->newPassportRpc->command('restorePassWordForMailCreate', $parameters);
	}

	/**
	 * @description:
	  修复登陆密码
	 *
	 * @param : $uid            string      用户通行证
	  $pid            string      随机参数
	  $password       string      登录密码
	 * @return: int,          0：xml-rpc错误 
	  1: 发送成功
	  -2: 未找到记录
	  -4: 数据库错误
	 *
	 */
	function restorePassWordForMailActive($uid, $pid, $password) {
		$parameters = array('uid' => $uid,
			'pid' => $pid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'ip' => $this->getIP());
		return $this->newPassportRpc->command('restorePassWordForMailActive', $parameters);
	}

	/**
	 * @description:
	  修复二级密码
	 *
	 * @param : $uid            string      用户通行证 
	 * @return: int,          0 : xml-rpc错误 
	  1 : 发送成功
	  2 : 发送失败
	  -2 : 用户不存在
	  -27: 此用户未绑定手机
	  -30: 每个手机每天最多重设密码3次
	  -4 : 数据库错误
	 *
	 */
	function restorePassWord2ForMobile($uid) {
		$parameters = array('uid' => $uid,
			'ip' => $this->getIP());
		return $this->newPassportRpc->command('restorePassWord2ForMobile', $parameters);
	}

	/**
	 * @description:
	  修改用户基本信息
	 *
	 * @param : array(
	  uid          => 通行证名称
	  fax          => 传真
	  qq           => qq
	  unit         => 单位
	  birth        => 生日
	  constellation=> 星座
	  animal       => 生肖
	  gender       => 性别
	  country      => 国家
	  province     => 省份
	  area         => 地区
	  address      => 地址
	  telephone    => 电话
	  zip          => 邮编
	  profession   => 职位
	  degree       => 学历
	  income       => 收入
	  )
	 * @return: int,          0: xml-rpc错误 
	  1: 修改成功
	  -4: 数据库错误
	 *
	 */
	function modifyUserBaseInfo($uid, $fax, $qq, $unit, $birth, $constellation, $animal, $gender, $country, $province, $area, $address, $telephone, $zip, $profession, $degree, $income) {
		$parameters = array('uid' => $uid,
			'fax' => $fax,
			'qq' => $qq,
			'unit' => $unit,
			'birth' => $birth,
			'constellation' => $constellation,
			'animal' => $animal,
			'gender' => $gender,
			'country' => $country,
			'province' => $province,
			'area' => $area,
			'address' => $address,
			'telephone' => $telephone,
			'zip' => $zip,
			'profession' => $profession,
			'degree' => $degree,
			'income' => $income,
			'ip' => $this->getIP());
		return $this->newPassportRpc->command('modifyUserBaseInfo', $parameters);
	}

	/**
	 * @description:
	  检查新手卡是否激活
	 *
	 * @param : $card        string      用户通行证
	 * @return: int
	 *  2: 未知错误
	 * 	-4:数据库错误
	 * -20:新手卡号不存在或者已经被激活
	 * -21:新手卡已经存在,可以继续激活
	 * -28:是词霸新手卡
	 * -32:新手卡卡号输入错误
	 * -45:是毒霸新手卡
	 *
	 */
	function IsNewUserCardExist($card) {
		$parameters = array('cardNum' => $card);
		return $this->newPassportRpc->command('IsNewUserCardExist', $parameters);
	}

	/**
	 * @description:
	  新手卡激活
	 *
	 * @param : $uid            string      卡号
	  $password       string      登录密码
	  $password2      string      二级密码
	  $bindmail       string      绑定邮箱
	  $regip          string      注册ip
	  $regdate        string      注册日期
	  $game           string      游戏
	  $realname       string      真实姓名
	  $id_type        string      证件类型
	  $id_num         string      证件号码
	 * @return: int,        0: xml-rpc错误
	  1 : 成功
	  -1 : 表示该passportId已经被注册过
	  -4 : 数据库错误
	  -20: 新手卡号不存在
	  -22: 新手卡密码不正确
	  -23: 新手卡已经激活
	 *
	 */
	function NewUserCardRegWithIDInfo($uid, $password, $password2, $bindmail, $regip, $regdate, $game, $realname, $id_type, $id_num) {
		$parameters = array('uid' => $uid,
			'password' => md5($password),
			'password2' => md5($password2),
			'bindmail' => $bindmail,
			'regip' => $regip,
			'regdate' => $regdate,
			'game' => $game,
			'realName' => $realname,
			'idType' => $id_type,
			'idNum' => $id_num);
		return $this->newPassportRpc->command('NewUserCardRegWithIDInfo', $parameters);
	}

	/**
	 * @description:
	  检查身份证账号是否注册过游戏
	 *
	 * @param : $realname       string      真实姓名
	 * @param : $idnum          string      身份证账号
	 * @return: int,    0: xml-rpc错误
	  1: 注册过游戏
	  2: 没有注册过游戏
	  -4: 数据库错误
	 *
	 */
	function checkIfIDCardUsed($realname, $idnum) {
		$parameters = array('realname' => $realname,
			'idnum' => $idnum);
		return $this->newPassportRpc->command('checkIfIDCardUsed', $parameters);
	}

	/**
	 * @description:
	  补充防沉迷信息
	 *
	 * @param : $uid        string      身份证账号
	  $realname   string      真实姓名
	  $id_type    string      证件类型
	  $idnum      string      证件号码
	  $ip         string      ip地址
	 * @return: int,    0: xml-rpc错误
	  1: 成功
	  -1: 该用户已有防沉迷信息
	  -4: 数据库错误
	  -37: 身份信息不完整
	  -38: 真实姓名输入错误
	  -39: 身份正号码输入错误
	 *
	 */
	function addIDInfo($uid, $realname, $id_type, $idnum, $ip) {
		$parameters = array('idnum' => $uid,
			'realName' => $realname,
			'cardType' => $id_type,
			'idCard' => $idnum,
			'userIp' => $ip);
		return $this->newPassportRpc->command('addIDInfo', $parameters);
	}

	/**
	 * @description:
	  修复统一密码（手机系统下发密码）
	 *
	 * @param : $uid        string      身份证账号
	 * @return: int,    0: xml-rpc错误
	  1: 发送成功
	  2: 发送失败
	  -2: 用户不存在
	  -27: 此用户未绑定手机
	  -30: 超过用户操作次数
	  -4: 数据库错误
	 *
	 */
	function restoreSamePassWordForMobile($uid) {
		$ip = $this->getIP();
		$parameters = array('uid' => $uid,
			'ip' => $ip);
		return $this->newPassportRpc->command('restoreSamePassWordForMobile', $parameters);
	}

	/**
	 * @description:
	  修复统一密码（邮箱）
	 *
	 * @param : $uid        string      身份证账号
	 * @return: int,    0: xml-rpc错误
	  1: 发送成功
	  2: 发送失败
	  -2: 用户不存在
	  -27: 此用户未绑定邮箱
	  -4: 数据库错误
	 *
	 */
	function restoreSamePassWordForMailCreate($uid) {
		$parameters = array('uid' => $uid);
		return $this->newPassportRpc->command('restoreSamePassWordForMailCreate', $parameters);
	}

	/**
	 * @description:
	  修复统一密码（确认信提交）
	 *
	 * @param : $uid        string      身份证账号
	  $pid        string      随机参数？
	  $password   string      登录密码
	 * @return: int,    0: xml-rpc错误
	  1: 发送成功
	  -2: 未找到记录
	  -4: 数据库错误
	 *
	 */
	function restoreSamePassWordForMailActive($uid, $pid, $password) {
		$parameters = array('uid' => $uid,
			'pid' => $pid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'ip' => $this->getIP());
		return $this->newPassportRpc->command('restoreSamePassWordForMailActive', $parameters);
	}

	/**
	 * @description:
	  客户端IP
	 *
	 * @param : null
	 * @return: string,  ip 地址 
	 *
	 */
	function getIP() {
		if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
			$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
		} elseif (isset($_SERVER['REMOTE_ADDR'])) {
			$ip = $_SERVER['REMOTE_ADDR'];
		} elseif (getenv("REMOTE_ADDR")) {
			$ip = getenv("REMOTE_ADDR");
		} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
			$ip = $_SERVER['HTTP_CLIENT_IP'];
		} elseif (getenv("HTTP_X_FORWARDED_FOR")) {
			$ip = getenv("HTTP_X_FORWARDED_FOR");
		} elseif (getenv("HTTP_CLIENT_IP")) {
			$ip = getenv("HTTP_CLIENT_IP");
		} else {
			$ip = null;
		}
		return $ip;
	}

	/**
	 * @description:
	  检查是否有防沉迷信息
	 *
	 * @param : $passportID     string      通行证账号
	 * @return: int,  0: xml-rpc错误
	  1: 有防沉迷信息
	  2: 没有防沉迷信息
	  -4: 数据库错误
	  -32: PASSPORT账号输入错误
	 *
	 */
	function checkIfHaveIDInfo($passportID) {
		//$parameters = array('passportID' => $passportID, 'ip'        => $this->getIP());
		$parameters = array('passportID' => $passportID);
		return $this->newPassportRpc->command('checkIfHaveIDInfo', $parameters);
	}

	/**
	 * @description:
	  检查是否会被纳入防沉迷系统
	 *
	 * @param : $realname   string      真实姓名
	  $idtype     string      证件类型
	  $idnum      string      证件号码
	 * @return: int,  0: xml-rpc错误
	  1: 初步验证通过
	  2: 身份证验证不通过，纳入防沉迷
	  -1: 未成年，纳入防沉迷
	  -2: 使用军人证或护照注册，纳入防沉迷
	  -37: 身份信息不完整
	  -38: 真实姓名输入错误
	  -39: 身份证号码输入错误
	 *
	 */
	function checkIfToBeLimited($realname, $id_type, $id_num) {
		$parameters = array('realname' => $realname,
			'idtype' => $id_type,
			'idnum' => $id_num);
		return $this->newPassportRpc->command('checkIfToBeLimited', $parameters);
	}

	//------------------ 下面接口即将废弃 --------------------

	/**
	 * @description:    
	  用户服务器认证. 在加强安全模式下调用
	 *
	 * @param : null
	 * @return: boolean，1：成功；0：失败
	 *
	 */
	function authRpc() {
		$md5_pw = crypt($this->_server_passwd, '$1$' . substr($this->_server_passwd, 0, 1) .
				substr($this->_server_passwd, 2, 1) .
				substr($this->_server_passwd, 4, 1));
		$parameters = array("serverID" => $this->_server_id,
			"serverPassWord" => $md5_pw);
		return $this->newPassportRpc->command('authServer', $parameters);
	}

	/**
	 * @description:
	  创建一个Passport的session. 就是通知passport张会有一个session到passport登录页
	 *
	 * @param : $uid            array       user id 一般用sessionid就可
	  $sessid         string      session_id
	  org_url         string      要跳转到的登录页url
	  $return_url     string      登录完成后要跳回的url
	  $data           string      要临时放在passport了的data, 返回后可以取出
	 * @return: string，    加密后的包
	 *
	 */
	function createSession($uid, $sessid, $org_url, $return_url, $data) {
		// 收集rpc用的参数
		$parameters = array('uid' => $uid,
			'sid' => $sessid,
			'originUrl' => $org_url,
			'returnurl' => $return_url,
			'data' => $data);
		return $this->newPassportRpc->command('createSession', $parameters);
	}

	/**
	 * @description:
	  用户从passport跳转回来时,用这个来验证session是否有效
	 *
	 * @param : $uid        string      用户登录后的账号
	  $sid        string      session_id
	  $pid        string      passport提供的流水号
	 * @return: array,  如果 array['result'] 是 success, 就合法
	 *
	 */
	function checkSession($uid, $sid, $pid) {
		$parameters = array('uid' => $uid,
			'sid' => $sid,
			'pid' => $pid);
		return $this->newPassportRpc->command('checkSession', $parameters);
	}

	/**
	 * @description:
	  检查将要绑定的手机是否已存在
	 *
	 * @param : $uid        string      用户登录后的账号 
	 * @return: string,   "mobileNotExist"  未绑定手机
	 *
	 */
	function checkMobile($uid) {
		$parameters = array('uid' => $uid);
		return $this->newPassportRpc->command('checkMobile', $parameters);
	}

	/**
	 * @description:
	  判断用户身份
	 *
	 * @param : $uid        string      用户通行证 
	  $flag       string      fs;jx
	 * @return: int,        0: xml-rpc错误 
	  1: 是
	  2: 不是
	  -4: 数据库错误
	 *
	 */
	function isUserServiceByFlag($uid, $flag) {
		$parameters = array('uid' => $uid,
			'flag' => $flag);
		return $this->newPassportRpc->command('isUserServiceByFlag', $parameters);
	}

	/**
	 * @description:
	  新手卡用户激活游戏
	 *
	 * @param : $uid            string      用户通行证 
	  $password2      string      二级密码
	  $regip          string      激活ip
	  $regdate        string      激活时间
	  $game           string      游戏, 如: fs;jx
	 * @return: int,        0: xml-rpc错误 
	  1: 成功
	  -2: 用户不存在
	  -3: 密码错误
	  -4: 数据库错误
	 *
	 */
	function newCardActiveGame($uid, $password2, $regip, $regdate, $game) {
		$parameters = array('uid' => $uid,
			'password2' => $password2,
			'regip' => $regip,
			'regdate' => $regdate,
			'game' => $game);
		return $this->newPassportRpc->command('newCardActiveGame', $parameters);
	}
	/**
	 * @description:
	 *
	 * @param : 
	 * @return: 
	 *
	 */
	function modifyAdStat($passportID, $ad) {
		$parameters = array('passportID' => $passportID,
			'ad' => $ad);
		return $this->newPassportRpc->command('modifyAdStat', $parameters);
	}
	/**
	 * @description:
	  设置动态密码绑定信息
	 *
	 * @param : $account         string      用户账号
	  $password2       string      二级密码
	  $games           string      值的形式如下：jx2:1;fs2:0;cq:1 每个游戏有一个编码，如jx2 代表 剑侠情缘网络版2
	  冒号前面代表游戏编码，
	  后面代表的是是否使用动态密码的标志 说明如下 1:使用动态密码 0:不使用
	  $mobile          string      用户手机号码
	  $user_ip         string      用户的IP
	 * @return: mixed,  0: xml-rpc错误
	  -2: 用户不存在
	  -3: 二级密码错误
	  -4: 数据库错误
	  -35: 二级密码格式错误
	  -32: 账号输入错误
	  -98: 游戏绑定信息错误
	  -40: 手机号输入错误
	  "jx2:1;fs:-2;cq:-4" 冒号前面代表是游戏，
	  后面代表的是查询该游戏动态密码信息的结果 说明如下
	  1:设置成功 -2:账号不存在 -4:数据库错误
	 *
	 */
	function setDynamicPwdInfo($account, $password2, $games, $mobile, $user_ip) {
		$parameters = array(
			'account' => $account,
			'password2' => $password2,
			'games' => $games,
			'mobile' => $mobile,
			'userIP' => $user_ip);
		
		return $this->newPassportRpc->command('setDynamicPwdInfo', $parameters);
	}
	/**
	 * @description:
	  根据账号获取动态密码绑定信息
	 *
	 * @param : $account    string      通行证账号
	 * @return: string,           key:value
	  "mobilephone":"13564512415"
	  "games":"jx2:1;fs:0;cq:-4"
	  冒号前面代表是游戏，后面代表的是查询该游戏动态密码信息的结果 说明如下
	  1:使用动态密码 0:不使用 -4:数据库错误
	 *                                           
	 */
	function getDynamicPwdInfo($account) {
		$parameters = array('account' => $account);
		return $this->newPassportRpc->command('getDynamicPwdInfo', $parameters);
	}
	/**
	 * @description:
	  新手卡激活
	 *
	 * @param : $uid            string      用户通行证
	  $password       string      登录密码
	  $password2      string      二级密码
	  $bindmail       string      绑定邮箱
	  $regip          string      注册ip
	  $regdate        string      注册日期
	  $game           string      游戏
	  $realname       string      真实姓名
	  $id_type        string      证件类型
	  $id_num         string      证件号码
	 * @return: int,        0: xml-rpc错误
	  1 : 成功
	  -1 : 表示该passportId已经被注册过
	  -4 : 数据库错误
	  -20: 新手卡号不存在
	  -22: 新手卡密码不正确
	  -23: 新手卡已经激活
	 *
	 */
	function NewUserCardReg($uid, $password, $password2, $bindmail, $regip, $regdate, $game, $realname, $id_type, $id_num) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'password2' => "{MD5}" . $this->base64(md5($password2)),
			'bindmail' => $bindmail,
			'regip' => $regip,
			'regdate' => $regdate,
			'game' => $game,
			'realName' => $realname,
			'idType' => $id_type,
			'idNum' => $id_num);
		return $this->newPassportRpc->command('NewUserCardReg', $parameters);
	}

	/**
	 * @description:
	  判断用户是否是flag的类型
	 *
	 * @param : $uid        string      用户通行证 
	  $flag       string      newcard ：新手卡，id_protect ：身份保护，newcard ：毒霸新手卡
	 * @return: int,        0: xml-rpc错误 
	  1: 是
	  2: 不是
	  -4: 数据库错误
	 *
	 */
	function isUserTypeByFlag($uid, $flag) {
		$parameters = array('uid' => $uid,
			'flag' => $flag);
		return $this->newPassportRpc->command('isUserTypeByFlag', $parameters);
	}

	/**
	 * @description:
	  修改绑定手机
	 *
	 * @param : $uid        string      用户通行证 
	  $mobile     string      用户绑定的手机号码
	 * @return: int,        0:XML-RPC错误 1:操作成功 2:未知错误 -4:数据库错误 -40:手机格式错误 -46:参数错误
	 * 
	 */
	function modifyMobilePhone($uid, $mobile) {
		$parameters = array('uid' => $uid,
			'mobile' => $mobile,
			'client_ip' => $this->getIP());
		return $this->newPassportRpc->command('modifyMobilePhone', $parameters);
	}

	/**
	 * @description:
	  修改登录密码
	 *
	 * @param : $uid        string      用户通行证 
	  $password   string      登录密码
	 * @return: int,        0:XML-RPC错误 1:成功 -2:用户不存在 -4:数据库错误 -46: 参数输入错误 -34:登录密码格式错误
	 * 
	 *
	 */
	function modifyPassWord($uid, $password) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'client_ip' => $this->getIP());
		return $this->newPassportRpc->command('modifyPassWord', $parameters);
	}

	/**
	 * @description:
	  修改二级密码
	 *
	 * @param : $uid        string      用户通行证 
	  $password   string      登录密码
	 * @return: int,        0:XML-RPC错误 1:成功 -2:用户不存在 -4:数据库错误 -46: 参数输入错误 -34:登录密码格式错误
	 * 
	 *
	 */
	function modifyPassWord2($uid, $password) {
		$parameters = array('uid' => $uid,
			'password' => "{MD5}" . $this->base64(md5($password)),
			'client_ip' => $this->getIP());
		return $this->newPassportRpc->command('modifyPassWord2', $parameters);
	}

	/**
	 * 通过账号获取用户在各游戏产品中的登录信息
	 *
	 * @param $uid    账号
	 * @param isBase64   标志带有汉字的字段是否base64编码，“0”表示否 “1”表示是
	 *
	 * @return Vector 用户在各产品的登录信息 Vector中每条记录都是Hashtable类型
	 *            Account:账号
	 *       Product_Name:游戏名称（汉字）
	 *    Last_Login_Time:最后一次登录时间 如2010-08-12 12:22:32
	 *      Last_Login_IP:最后一次登录IP 如202.106.0.20
	 *
	 */
	function getAccountProductInfo($uid, $isBase64) {
		$parameters = array('uid' => $uid,
			'isBase64' => $isBase64);
		return $this->newPassportRpc->command('getAccountProductInfo', $parameters);
	}

}